package com.jubao.ejb.business;

import java.util.List;

import com.jubao.ejb.entity.Product;
import com.jubao.ejb.entity.ProductPrice;

public interface ProductBusiness {

	/**
	 * get products which is member of product-category and member of brand
	 * 
	 * @param productCategorySysId
	 * @param brandSysId
	 * @param pgno
	 * @param pgsize
	 * 
	 * @return List<Product>
	 */
	public List<Product> getProductList(long productCategorySysId, long brandSysId, int pgno, int pgsize);

	/**
	 * get count of products which is member of product-category and member of brand
	 * 
	 * @param productCategorySysId
	 * @param brandSysId
	 * @param pgno
	 * @param pgsize
	 * 
	 * @return List<Product>
	 */
	public long getProductCount(long productCategorySysId, long brandSysId);

	/**
	 * get products sale by store which are member of areacategory and businesscategory
	 * 
	 * @param areaCategorySysId
	 * @param businessCategorySysId
	 * @param storeSysId
	 * @param productSysId
	 * @param pgno
	 * @param pgsize
	 * @return
	 */
	public List<ProductPrice> getProductPriceList(long areaCategorySysId, long storeSysId, long productSysId, int pgno,
			int pgsize);

	/**
	 * get count of products sale by store which are member of areacategory and businesscategory
	 * 
	 * @param areaCategorySysId
	 * @param businessCategorySysId
	 * @param storeSysId
	 * @param productSysId
	 * @return
	 */
	public long getProductPriceCount(long areaCategorySysId, long storeSysId, long productSysId);

	/**
	 * Find product price of the store
	 * 
	 * @param storeSysId
	 * @param productSysId
	 * @return
	 */
	public ProductPrice findProductPrice(long storeSysId, long productSysId);

	/**
	 * save product price
	 *  
	 * @param storeSysId
	 * @param productSysId
	 * @param productPrice holding the price information
	 * @return
	 */
	public ProductPrice saveProductPrice(long storeSysId, long productSysId, ProductPrice productPrice);

	/**
	 * add product as member of the primary category trail of categorySysId
	 * @param productSysId
	 * @param categorySysId
	 */
	public void add2CateogryTrail(long productSysId, long categorySysId);

	/**
	 * remove product from member of the primary category trail of categorySysId
	 * 
	 * @param productSysId
	 * @param categorySysId
	 */
	public void removeFromCategoryTrail(long productSysId, long categorySysId);

	/**
	 * add product as member of brand and set product's brand to brand identified by brandSysId
	 *  
	 * @param productSysId
	 * @param brandSysId
	 */
	public void add2Brand(long productSysId, long brandSysId);
	
	}
